import { createRouter, createWebHistory } from 'vue-router'
import place_an_order from '@/views/place_an_order.vue'
import HistoryList from '@/views/HistoryList.vue';
import location from '@/views/location.vue'
import address from '@/views/address.vue'
import edit from '@/views/edit.vue'

// 创建路由实例
const router = createRouter({
  history: createWebHistory(import.meta.env.BASE_URL), // 使用HTML5历史模式
  routes: [
    {
      path: '/',
      redirect: '/home'
    },
    {
      path: '/login',
      name: 'login',
      component: () => import('@/views/Login.vue'),
      meta: { public: true },
      path: '/', // 根路径
      redirect: '/home' // 重定向到首页
    },
    {
      path: '/login', // 登录页路径
      name: 'login', // 路由名称
      component: () => import('@/views/Login.vue'), // 登录页组件（懒加载）
      meta: { public: true } // 元信息：标记为公开页面（无需登录）
    },
    //购物车
    {
      path: '/cart',
      name: 'cart',
      component: () => import('@/views/cart.vue'),
      meta: { public: true }
    },

    // 首页
    {
      path: '/home',
      name: 'home',
      component: () => import('@/views/home.vue'),
      meta: { public: true }
    },
    // 商品搜索
    {
      path: '/productsearch',
      name: 'productsearch',
      component: () => import('@/views/ProductSearch.vue'),
      meta: { public: true }
    },
    // 商品分类页面
    {
      path: '/productscategory',
      name: 'productscategory',
      component: () => import('@/views/Productscategory.vue'),
      meta: { public: true },
      component: () => import('@/views/Productscategory.vue'), // 商品分类组件（懒加载）
      meta: { public: true } // 公开页面
    },
    // 商品详情页面
    {
      path: '/product/:id', // 带商品ID参数的路径
      name: 'ProductDetail',
      component: () => import('@/views/ProductDetail.vue'),
      meta: { public: true },
      component: () => import('@/views/ProductDetail.vue'), // 商品详情组件（懒加载）
      meta: { public: true } // 公开页面
    },
    {
      path: '/cart', // 购物车路径
      name: 'cart',
      component: () => import('@/views/cart.vue'), // 购物车组件（懒加载）
    },
    {
      path: '/order', // 下单页面路径
      name: 'order',
      component: place_an_order // 下单组件
    },
    {
      path: '/myself', // 个人中心路径
      name: 'myself',
      component: () => import('@/views/myself.vue'), // 个人中心组件（懒加载）
      // meta: { public:true } // 注释：若需要公开可取消注释
    },
    // 订单详情页（模拟的）
    {
      path: '/order/detail/:orderId', // 带订单ID参数的路径
      name: 'OrderDetail',
      component: () => import('@/views/OrderDetail.vue'), // 订单详情组件（懒加载）
      props: true // 允许通过props接收参数
    },
    // 订单详情页（真实的）
    {
      path: '/orderdetails',
      name: 'orderdetails',
      component: () => import('@/views/OrderDetails.vue')
    },
    // 支付结果页面
    {
      path: '/payment/sandbox_result',
      name: 'SandBoxPaymentResult',
      component: () => import('@/views/SandBoxPaymentResult.vue') // 沙箱支付结果组件（懒加载）
    },
    // 商品浏览历史
    {
      path: '/history',
      name: 'history',
      component: HistoryList // 浏览历史组件
    },

    // 商品评价
    {
      path: '/comment/:id', // 带商品ID参数的路径
      name: 'comment',
      component: () => import('@/views/Comment.vue') // 评价组件（懒加载）
    },
    // 订单历史
    {
      path: '/getoderhistory',
      name: 'getoderhistory',
      component: () => import('@/components/GetOrderHistory.vue') // 订单历史组件（懒加载）
    },
    {
      path: '/location', // 位置页面路径
      name: 'location',
      component: location // 位置组件
    },
    {
      path: '/address', // 地址页面路径
      name: 'address',
      component: address // 地址组件
    },
    {
      path: '/edit', // 编辑页面路径
      name: 'edit',
      component: edit // 编辑组件
    },
    {
      path: '/hot', // 热门商品页面路径
      name: 'hot',
      component: () => import('@/views/Hot.vue')
    },
    // 商品浏览历史
    {
      path: '/orderdetails',
      name: 'orderdetails',
      component: () => import('@/views/OrderDetails.vue')
    },
    {
      path: '/member',//等级页面路径
      name: 'member',
      component: () => import('@/views/Member.vue')
    },
    {
      path: '/vip',//会员充值页面
      name: 'vip',
      component: () => import('@/views/vip.vue')
    }
  ]
})


// 路由拦截器（导航守卫）
router.beforeEach((to, from, next) => {
  const token = localStorage.getItem('token'); // 从本地存储获取token

  if (to.meta.public) {
    // 若为公开页面，直接放行
    next()
  } else if (token) {
    // 若已登录（存在token），直接放行
    console.log(token)
    next()
  } else {
    // 未登录且需要验证的页面，重定向到登录页
    next('/login')
  }
})

export default router // 导出路由实例